package com.nai365.nart.search.config;

import org.apache.http.HttpHost;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Description:
 * @Created: with IntelliJ IDEA.
 * @author: baogs
 * @createTime: 2021-03-04 16:46
 **/

@Configuration
public class NartElasticSearchConfig {

    // @Bean
    // public RestHighLevelClient esRestClient(){
    //     RestHighLevelClient client = new RestHighLevelClient(
    //             RestClient.builder(new HttpHost("192.168.137.14", 9200, "http")));
    //     return  client;
    // }

    public static final RequestOptions COMMON_OPTIONS;
    static {
        RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
        // builder.addHeader("Authorization", "Bearer " + TOKEN);
        // builder.setHttpAsyncResponseConsumerFactory(
        //         new HttpAsyncResponseConsumerFactory
        //                 .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024 * 1024));
        COMMON_OPTIONS = builder.build();
    }

    @Bean
    public RestHighLevelClient esRestClient(){
//		BasicCredentialsProvider basicCredentialsProvider = new BasicCredentialsProvider();
//		basicCredentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("elastic","dknJrktijNpEy9FmT9b2"));
//		RestClientBuilder http = RestClient.builder(new HttpHost("112.74.60.53", 9200, "http"));
//		http.setHttpClientConfigCallback(httpAsyncClientBuilder -> httpAsyncClientBuilder.setDefaultCredentialsProvider(basicCredentialsProvider));
//		RestHighLevelClient client = new RestHighLevelClient(http);

		RestHighLevelClient client = new RestHighLevelClient(
				RestClient.builder(new HttpHost("192.168.153.129", 9200, "http")));

        return  client;
    }

}
